package com.foreknow.demo14;

import com.foreknow.demo9.B;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 功能类
 * 1.向文件中写数据
 * 2.从源文件中读取数据
 */
public class Function {

    /**
     * 写数据
     * 有参数 List<Student>
     * 无返回值类型
     *
     * 流程(如何实现)
     * 1.选取合适的IO流(输出流/处理流/字符流)
     * 2.遍历集合
     *   每遍历1次就会得到一个Student对象，通过get方法获取到学生信息，将信息写入到目标文件中
     * 3.释放资源
     */
    public void write(List<Student> list) {
        try {
            FileWriter fw = new FileWriter("studentsMessage.txt");
            BufferedWriter bw = new BufferedWriter(fw);
            for (Student stu:list) {
                bw.write(stu.getSid()+" ");
                bw.write(stu.getName()+" ");
                bw.write(stu.getAge()+" ");
                bw.write(stu.getTel());
                bw.newLine();
            }
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 读取数据
     * 有参数  String fileName
     * 返回值类型 List<Student>
     *
     * 流程(如何实现)
     * 1.选取IO流(输入流/处理流/字符流)
     * 2.读取源文件中的一行(readLine)就是一个字符串String
     *   通过String中的split方法(" ")拆分--->String[]
     *   将String[]中的数据保存到Student对象中，再将Student对象保存到List中，返回List
     */
    public List<Student> read(String fileName) {
        List<Student> list = new ArrayList<>();
        try {
            FileReader fr = new FileReader("studentsMessage.txt");
            BufferedReader br = new BufferedReader(fr);
            String message = br.readLine();
            while (message != null) {
                String[] str = message.split(" ");
                Student stu = new Student();
                stu.setSid(str[0]);
                stu.setName(str[1]);
                stu.setAge(str[2]);
                stu.setTel(str[3]);
                list.add(stu);
                message = br.readLine();
            }
            br.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list;
    }
}














